package cn.tedu.exec;
/**本类用于面向对象综合案例*/
public class TestDog {
    public static void main(String[] args) {
        //5.1创建本类的对象1
        Dog d1 = new Dog();
        //给对象的属性赋值:哮天犬 999 细犬 二郎神 10000,并查看
        d1.setName("哮天犬");
        d1.setAge(999);
        d1.setKind("细犬");
        d1.setHost("二郎神");
        d1.setPrice(10000);
        System.out.println(d1.getName());
        System.out.println(d1.getAge());
        System.out.println(d1.getKind());
        System.out.println(d1.getHost());
        System.out.println(d1.getPrice());

        //6.创建小狗类的对象2并调用小狗类的功能
        Dog d2 = new Dog();
        d2.run();
        d2.eat(6);
        d2.sleep(8.8);

        d2.play("二郎神");//纯调用play()的功能

        //既调用了play()的功能,又接到了返回值
        String s = d2.play("沉香");
        System.out.println(s);//打印接到的返回值

        //没有定义多余的变量,直接打印方法的返回值
        System.out.println(d2.play("三圣母"));

        //d2.bark();//私有方法不可以在其他类调用
    }
}
//1.抽象形成一个小狗类Dog
class Dog{
    //2.属性:名字name 年龄age 品种kind 主人host 价格price
    //3.1封装所有的属性
    private String name;
    private int age;
    private String kind;
    private String host;
    private double price;
    //方法格式:修饰符 返回值类型 方法名(参数列表){方法体}
    //4.1添加小狗类的功能1
    //跑run:无参,无返回值,打印:小狗Dog跑的老快啦~
    public void run(){
        System.out.println("小狗Dog跑的老快啦~");
    }
    //4.2添加小狗类的功能2
    //吃eat:参数int n,无返回值,打印:小狗Dog今晚要吃n根肉骨头
    public void eat(int n){
        System.out.println("小狗Dog今晚要吃"+n+"根肉骨头");
    }
    //4.3添加小狗类的功能3
    //睡觉sleep:参数double num,无返回值,打印:小狗Dog今天一共睡了num个小时
    public void sleep(double num){
        System.out.println("小狗Dog今天一共睡了"+num+"个小时");
    }
    //4.4添加小狗类的功能4
    //玩play:参数String host,返回值String"飞盘",打印:小狗与主人host玩的很开心
    public String play(String host){
        System.out.println("小狗与主人"+host+"玩的很开心");
        bark();//调用封装的方法
        return "飞盘";
    }
    //4.5添加小狗类的功能5
    //叫bark:打印:小狗喜欢汪汪叫,此方法要封装,玩的时候才叫
    private void bark(){
        System.out.println("小狗喜欢汪汪叫");
    }

    //3.2提供所有属性对应的get与set方法
    //Alt+Insert->Getter and Setter->Ctrl+A
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getKind() {
        return kind;
    }

    public void setKind(String kind) {
        this.kind = kind;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}
